package org.taskexecution.taskexecution.infrastructure.po.scheduledTask;

/**
 * @author Lydond
 * @description: 任务调度 实体类
 * @create_date: 2025/10/20-15:10
 */

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 2.任务调度表 (用户指定的待执行任务)
 */
@Data
@TableName("task_schedule")
public class TaskSchedule {

    /**
     * 调度ID
     */
    @TableId(value = "schedule_id", type = IdType.AUTO)
    private Long scheduleId;

    /**
     * 关联的任务定义ID
     */
    @TableField("task_def_id")
    private Long taskDefId;

    /**
     * 关联的业务ID (例如: 订单号, 合同ID)
     */
    @TableField("business_id")
    private String businessId;

    /**
     * 创建任务的用户ID
     */
    @TableField("create_by")
    private String createBy;

    /**
     * 用户指定的执行时间
     */
    @TableField("scheduled_exec_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime scheduledExecTime;

    /**
     * 执行任务所需的参数 (JSON字符串)
     */
    @TableField("task_params")
    private String taskParams;

    /**
     * 调度状态 (0: 待执行, 1: 已执行, 2: 已取消, 3: 执行中)
     */
    @TableField("status")
    private Integer status;

    /**
     * 优先级 (0-9, 数字越小优先级越高)
     */
    @TableField("priority")
    private Integer priority;

    /**
     * 最后一次执行的日志ID (方便快速关联)
     */
    @TableField("last_log_id")
    private Long lastLogId;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}